快慢指针
javascript
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @param {number} n
* @return {ListNode}
*/
var removeNthFromEnd = function (head, n) {
let result = new ListNode()
result.next = head
let first = head,
second = head
let i = 0
while (first) {
first = first.next
if (i > n) {
second = second.next
}
i++
}
if (n > i) {
return null
}
if (i === n) {
result.next = head.next
} else {
second.next = second.next.next
}
return result.next
}